package com.example.secondhandshop.ui.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.secondhandshop.R;
import com.example.secondhandshop.bean.Item;
import java.util.List;

/**
 * 商品适配器类，用于在RecyclerView中展示商品列表
 */
public class HomeGoodsAdapter extends RecyclerView.Adapter<HomeGoodsAdapter.ItemViewHolder> {
    private List<Item> itemList;  // 存储商品列表
    private OnItemClickListener onItemClickListener;  // 点击事件监听器

    /**
     * 点击事件接口
     */
    public interface OnItemClickListener {
        void onItemClick(Item item);  // 单击事件回调方法
    }

    /**
     * 构造函数
     *
     * @param itemList 商品列表
     * @param listener 点击事件监听器
     */
    public HomeGoodsAdapter(List<Item> itemList, OnItemClickListener listener) {
        this.itemList = itemList;
        this.onItemClickListener = listener;
    }

    @NonNull
    @Override
    public ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 从布局文件中加载商品item视图
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
        return new ItemViewHolder(view); // 返回新创建的ViewHolder
    }

    @Override
    public void onBindViewHolder(@NonNull ItemViewHolder holder, int position) {
        Item item = itemList.get(position);  // 获取当前商品
        holder.titleText.setText(item.getTypeName());  // 设置商品标题
        holder.priceText.setText("￥" + item.getPrice());  // 设置商品价格
        holder.usernameText.setText(item.getUsername());  // 设置用户名

        // 加载用户头像
        Glide.with(holder.itemView.getContext())
                .load(item.getAvatar())
                .placeholder(R.drawable.unknown_person_image)  // 加载前的占位图
                .into(holder.userImage);

        // 加载商品图片
        if (!item.getImageUrlList().isEmpty()) {  // 检查是否有商品图片
            Glide.with(holder.itemView.getContext())
                    .load(item.getImageUrlList().get(0))  // 加载第一张图片
                    .placeholder(R.drawable.unknown_goods)  // 加载前的占位图
                    .into(holder.goodsImage);
        }

        // 设置点击事件
        holder.itemView.setOnClickListener(v -> {
            if (onItemClickListener != null) {
                onItemClickListener.onItemClick(item);  // 调用点击事件的回调方法
            }
        });
    }

    @Override
    public int getItemCount() {
        return itemList.size();  // 返回商品列表的长度
    }

    /**
     * ViewHolder类，用于缓存item视图，以提高RecyclerView的性能
     */
    static class ItemViewHolder extends RecyclerView.ViewHolder {
        TextView titleText;  // 商品标题
        TextView priceText;  // 商品价格
        TextView usernameText;  // 用户名
        ImageView userImage;  // 用户头像
        ImageView goodsImage;  // 商品图片

        public ItemViewHolder(@NonNull View itemView) {
            super(itemView);
            titleText = itemView.findViewById(R.id.titleText);  // 初始化标题TextView
            priceText = itemView.findViewById(R.id.priceText);  // 初始化价格TextView
            usernameText = itemView.findViewById(R.id.usernameText);  // 初始化用户名TextView
            userImage = itemView.findViewById(R.id.userImage);  // 初始化用户头像
            goodsImage = itemView.findViewById(R.id.goodsImage);  // 初始化商品图片
        }
    }
}